home *** CD-ROM | disk | FTP | other *** search
/ SPACE 1 / SPACE - Library 1 - Volume 1.iso / games / 299 / scorfour / scorfour.lst < prev    next >
File List  |  1987-10-11  |  11KB  |  461 lines

  1. Rem
  2. Rem This program is distributed by MichTron free of charge and is not to be
  3. Rem  sold, rented or used in any way to generate profit.
  4. Rem Modified: 87/07/22 by Bob Raper - Alert messages translated to English.
  5. Rem Modified: 87/10/06 by Bob Raper - Open statement (for picture) changed to refer to current folder so game and picture may be in same folder. (Directory)
  6. Rem
  7. Hidem
  8. @Init.dat
  9. @Init.pictures
  10. Do
  11.   Setcolor 15,3,0,5
  12.   Alert 2,"  How many players will   |  try to get four stones  |       in one line?       ",1,"  ONE  |  TWO ",Ez%
  13.   Setcolor 15,2,1,0
  14.   C!=False
  15.   If Ez%=1
  16.     C!=True
  17.   Endif
  18.   Arrayfill Fw%(),0
  19.   Sput Screen$
  20.   Clr T$
  21.   Do
  22.     @Kugel.setzen(1)
  23.     @Unentschieden
  24.     @Gewonnen(1)
  25.     Exit If T$>""
  26.     If C!
  27.       @Computer.setzt
  28.     Else
  29.       @Kugel.setzen(2)
  30.     Endif
  31.     @Unentschieden
  32.     @Gewonnen(2)
  33.     Exit If T$>""
  34.   Loop
  35.   Setcolor 15,3,0,5
  36.   Alert 1,T$,1," YES  | NO  ",Jn%
  37.   Exit If Jn%=2
  38.   For D%=0 To 63
  39.     Sprite K$(D%,0)
  40.     Sprite K$(D%,1)
  41.   Next D%
  42. Loop
  43. Setcolor 0,4,4,4
  44. Edit
  45. '
  46. '
  47. '
  48. Procedure Kugel.setzen(Sp%)
  49.   '
  50.   F!=False
  51.   Do
  52.     Mouse X%,Y%,K%
  53.     Vsync
  54.     Sprite Pfeil$,X%,Y%
  55.     If K%
  56.       Repeat
  57.       Until Mousek=0
  58.       Sprite Pfeil$
  59.       For D%=0 To 63
  60.         If X%>Bx%(D%) And X%<Bx%(D%)+14 And Y%>By%(D%)+2 And Y%<By%(D%)+16
  61.           If Fw%(D%)=0
  62.             Sprite K$(D%,Sp%-1),Bx%(D%),By%(D%)
  63.             Sound 1,12,10,4,10
  64.             Wave 0,0
  65.             Fw%(D%)=Sp%
  66.             F!=True
  67.           Endif
  68.         Endif
  69.       Next D%
  70.     Endif
  71.     Exit If F!
  72.   Loop
  73.   '
  74. Return
  75. '
  76. '
  77. Procedure Unentschieden
  78.   '
  79.   U!=True
  80.   For D%=0 To 63
  81.     If Fw%(D%)=0
  82.       U!=False
  83.     Endif
  84.   Next D%
  85.   If U!
  86.     T$=" |     Draw - The play       |      went undecided!       |      Another play?       "
  87.   Endif
  88.   '
  89. Return
  90. '
  91. '
  92. Procedure Gewonnen(Sp%)
  93.   '
  94.   Clr G%
  95.   For L%=0 To 75
  96.     If Fw%(Linie%(L%,0))=Sp% And Fw%(Linie%(L%,1))=Sp% And Fw%(Linie%(L%,2))=Sp% And Fw%(Linie%(L%,3))=Sp%
  97.       G%=L%+1
  98.     Endif
  99.   Next L%
  100.   If G%
  101.     Dec G%
  102.     For D%=0 To 57
  103.       Sound 1,9,No%(D%),Oktave%(D%)
  104.       Sound 2,3,No%(D%),Oktave%(D%)-1
  105.       Sound 3,2,No%(D%),Oktave%(D%)+1
  106.       Wave 7,7,3,20000,Dauer%(D%)/2
  107.     Next D%
  108.     Wave 0,0
  109.     Graphmode 3
  110.     Defline 1,1,0,0
  111.     X0%=Bx%(Linie%(G%,0))+7
  112.     Y0%=By%(Linie%(G%,0))+7
  113.     X1%=Bx%(Linie%(G%,3))+7
  114.     Y1%=By%(Linie%(G%,3))+7
  115.     P%=200/Sqr((X0%-X1%)^2+(Y0%-Y1%)^2)
  116.     A%=7
  117.     E%=0
  118.     S=-0.5
  119.     Do
  120.       Swap A%,E%
  121.       S=-S
  122.       For D=A% To E% Step S
  123.         Setcolor 8,0.7*D,0.3*D,D
  124.         Draw X0%,Y0% To X1%,Y1%
  125.         Pause P%
  126.       Next D
  127.       Exit If Inkey$>"" Or Mousek
  128.     Loop
  129.     Setcolor 8,3,0,5
  130.     T$=" |  Player "+Str$(Sp%)+" has  |   won this time!!  |    Another play?     "
  131.   Endif
  132.   '
  133. Return
  134. '
  135. '
  136. Procedure Computer.setzt
  137.   '
  138.   Arrayfill Bw%(),0
  139.   For L%=0 To 75
  140.     For P%=0 To 3
  141.       If Fw%(Linie%(L%,P%))=1
  142.         Inc Bw%(L%)
  143.       Endif
  144.       If Fw%(Linie%(L%,P%))=2
  145.         Sub Bw%(L%),4
  146.       Endif
  147.     Next P%
  148.   Next L%
  149.   Clr Clnr%,Cf%
  150.   Cw%=Bw%(0)
  151.   For L%=1 To 75
  152.     If Bw%(L%)>Cw%
  153.       Cw%=Bw%(L%)
  154.       Clnr%=L%
  155.     Endif
  156.   Next L%
  157.   Spez!=False
  158.   If Cw%=3
  159.     For P%=0 To 3
  160.       If Fw%(Linie%(Clnr%,P%))=0
  161.         Cf%=Linie%(Clnr%,P%)
  162.       Endif
  163.     Next P%
  164.   Else
  165.     For D%=0 To 431
  166.       If Fw%(P%(D%))=0 And Bw%(L1%(D%))=2 And Bw%(L2%(D%))=2
  167.         Spez!=True
  168.         Cf%=P%(D%)
  169.       Endif
  170.       Exit If Cf%
  171.     Next D%
  172.   Endif
  173.   Arrayfill Bw%(),0
  174.   For L%=0 To 75
  175.     For P%=0 To 3
  176.       If Fw%(Linie%(L%,P%))=2
  177.         Inc Bw%(L%)
  178.       Endif
  179.       If Fw%(Linie%(L%,P%))=1
  180.         Sub Bw%(L%),4
  181.       Endif
  182.     Next P%
  183.   Next L%
  184.   Clr Clnr%,Gf%
  185.   Gw%=Bw%(0)
  186.   For L%=1 To 75
  187.     If Bw%(L%)>Gw%
  188.       Gw%=Bw%(L%)
  189.       Clnr%=L%
  190.     Endif
  191.   Next L%
  192.   For P%=0 To 3
  193.     If Fw%(Linie%(Clnr%,P%))=0
  194.       Gf%=Linie%(Clnr%,P%)
  195.     Endif
  196.   Next P%
  197.   If Gw%<3
  198.     D!=False
  199.     For D%=0 To 431
  200.       If Fw%(P%(D%))=0 And Bw%(L1%(D%))>0 And Bw%(L2%(D%))>0
  201.         If Bw%(L1%(D%))=2 And Bw%(L2%(D%))=2
  202.           Gf%=P%(D%)
  203.           Spez!=False
  204.           D!=True
  205.         Else
  206.           If Bw%(L1%(D%))<2
  207.             For P%=0 To 3
  208.               If Fw%(Linie%(L1%(D%),P%))=0 And Linie%(L1%(D%),P%)<>P%(D%)
  209.                 Gf%=Linie%(L1%(D%),P%)
  210.               Endif
  211.             Next P%
  212.           Else
  213.             For P%=0 To 3
  214.               If Fw%(Linie%(L2%(D%),P%))=0 And Linie%(L2%(D%),P%)<>P%(D%)
  215.                 Gf%=Linie%(L2%(D%),P%)
  216.               Endif
  217.             Next P%
  218.           Endif
  219.         Endif
  220.       Endif
  221.       Exit If D!
  222.     Next D%
  223.   Endif
  224.   If Gw%=3 Or (Cw%<>3 And Spez!=False)
  225.     Cf%=Gf%
  226.   Endif
  227.   Fw%(Cf%)=2
  228.   Sprite K$(Cf%,1),Bx%(Cf%),By%(Cf%)
  229.   Sound 1,12,10,4-D!,10
  230.   Wave 0,0
  231.   '
  232. Return
  233. '
  234. '
  235. Procedure Init.pictures
  236.   '
  237.   Restore Farbpalette
  238.   For D%=0 To 15
  239.     Read R%,G%,B%
  240.     Setcolor D%,R%,G%,B%
  241.   Next D%
  242.   Restore Melodie
  243.   Dim No%(57),Oktave%(57),Dauer%(57)
  244.   For D%=0 To 57
  245.     Read No%(D%),Oktave%(D%),Dauer%(D%)
  246.   Next D%
  247.   Restore Pfeil
  248.   Clr Pfeil$
  249.   For D%=1 To 37
  250.     Read Dat%
  251.     Pfeil$=Pfeil$+Mki$(Dat%)
  252.   Next D%
  253.   Restore Kugel
  254.   Dim K$(63,1)
  255.   K$(0,0)=""
  256.   For D%=1 To 37
  257.     Read Dat%
  258.     K$(0,0)=K$(0,0)+Mki$(Dat%)
  259.   Next D%
  260.   K$(0,1)=K$(0,0)
  261.   Mid$(K$(0,1),7,4)=Mki$(7)+Mki$(6)
  262.   For D%=1 To 63
  263.     K$(D%,0)=K$(0,0)
  264.     K$(D%,1)=K$(0,1)
  265.   Next D%
  266.   Dim Bx%(63),By%(63)
  267.   For Z%=0 To 3
  268.     For Y%=0 To 3
  269.       For X%=0 To 3
  270.         Bx%(X%+4*Y%+16*Z%)=178+22*X%-11*Y%
  271.         By%(X%+4*Y%+16*Z%)=11*Y%+50*Z%
  272.       Next X%
  273.     Next Y%
  274.   Next Z%
  275.   Dim Fw%(63)
  276.   Arrayfill Fw%(),0
  277.   Open "I",#1,"SCORFOUR.PIC"
  278.   Screen$=Input$(32000,#1)
  279.   Close
  280.   '
  281. Return
  282. '
  283. '
  284. Procedure Init.dat
  285.   '
  286.   Dim Linie%(75,3)
  287.   Dim Bw%(75)
  288.   Restore Linien
  289.   For L%=0 To 9
  290.     For P%=0 To 3
  291.       Read Linie%(L%,P%)
  292.       Linie%(L%+10,P%)=Linie%(L%,P%)+16
  293.       Linie%(L%+20,P%)=Linie%(L%,P%)+32
  294.       Linie%(L%+30,P%)=Linie%(L%,P%)+48
  295.     Next P%
  296.   Next L%
  297.   For L%=40 To 45
  298.     For P%=0 To 3
  299.       Read Linie%(L%,P%)
  300.       Linie%(L%+6,P%)=Linie%(L%,P%)+4
  301.       Linie%(L%+12,P%)=Linie%(L%,P%)+8
  302.       Linie%(L%+18,P%)=Linie%(L%,P%)+12
  303.     Next P%
  304.   Next L%
  305.   For L%=64 To 65
  306.     For P%=0 To 3
  307.       Read Linie%(L%,P%)
  308.       Linie%(L%+2,P%)=Linie%(L%,P%)+1
  309.       Linie%(L%+4,P%)=Linie%(L%,P%)+2
  310.       Linie%(L%+6,P%)=Linie%(L%,P%)+3
  311.     Next P%
  312.   Next L%
  313.   For L%=72 To 75
  314.     For P%=0 To 3
  315.       Read Linie%(L%,P%)
  316.     Next P%
  317.   Next L%
  318.   Dim P%(431),L1%(431),L2%(431)
  319.   For L%=0 To 31
  320.     Read P%(L%),L1%(L%),L2%(L%)
  321.     P%(L%+32)=P%(L%)+16
  322.     P%(L%+64)=P%(L%)+32
  323.     P%(L%+96)=P%(L%)+48
  324.     L1%(L%+32)=L1%(L%)+10
  325.     L1%(L%+64)=L1%(L%)+20
  326.     L1%(L%+96)=L1%(L%)+30
  327.     L2%(L%+32)=L2%(L%)+10
  328.     L2%(L%+64)=L2%(L%)+20
  329.     L2%(L%+96)=L2%(L%)+30
  330.   Next L%
  331.   For L%=128 To 159
  332.     Read P%(L%),L1%(L%),L2%(L%)
  333.     P%(L%+32)=P%(L%)+1
  334.     P%(L%+64)=P%(L%)+2
  335.     P%(L%+96)=P%(L%)+3
  336.     L1%(L%+32)=L1%(L%)+1-(L1%(L%)>63)
  337.     L1%(L%+64)=L1%(L%)+2-(L1%(L%)>63)*2
  338.     L1%(L%+96)=L1%(L%)+3-(L1%(L%)>63)*3
  339.     L2%(L%+32)=L2%(L%)+1-(L2%(L%)>63)
  340.     L2%(L%+64)=L2%(L%)+2-(L2%(L%)>63)*2
  341.     L2%(L%+96)=L2%(L%)+3-(L2%(L%)>63)*3
  342.   Next L%
  343.   For L%=256 To 287
  344.     Read P%(L%),L1%(L%),L2%(L%)
  345.     P%(L%+32)=P%(L%)+4
  346.     P%(L%+64)=P%(L%)+8
  347.     P%(L%+96)=P%(L%)+12
  348.     L1%(L%+32)=L1%(L%)+1-(L1%(L%)>30)*5
  349.     L1%(L%+64)=L1%(L%)+2-(L1%(L%)>30)*10
  350.     L1%(L%+96)=L1%(L%)+3-(L1%(L%)>30)*15
  351.     L2%(L%+32)=L2%(L%)+1-(L2%(L%)>30)*5
  352.     L2%(L%+64)=L2%(L%)+2-(L2%(L%)>30)*10
  353.     L2%(L%+96)=L2%(L%)+3-(L2%(L%)>30)*15
  354.   Next L%
  355.   For L%=384 To 431
  356.     Read P%(L%),L1%(L%),L2%(L%)
  357.   Next L%
  358.   '
  359. Return
  360. '
  361. '
  362. Farbpalette:
  363. Data 0,0,0
  364. Data 7,3,5
  365. Data 7,0,0
  366. Data 4,2,3
  367. Data 0,6,6
  368. Data 0,5,5
  369. Data 7,0,6
  370. Data 6,0,5
  371. Data 3,0,5
  372. Data 2,3,4
  373. Data 3,2,0
  374. Data 7,7,0
  375. Data 0,2,3
  376. Data 7,0,0
  377. Data 0,3,5
  378. Data 2,1,0
  379. '
  380. '
  381. Kugel:
  382. Data 0,0,1,5,4
  383. Data 1984,0,8176,0,15416,960,32652,112,32708,56,65510,24,65506,28,65506,28
  384. Data 65506,28,65534,0,32764,0,32752,0,16320,0,7680,0,0,0,0,0
  385. '
  386. '
  387. Pfeil:
  388. Data 0,0,1,11,13
  389. Data 63488,0,33792,30720,34816,28672,33792,30720,41472,23552,20736,3584,2176,1792,1152,768
  390. Data 768,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  391. '
  392. '
  393. Melodie:
  394. Data 1,4,16,5,4,16
  395. Data 8,4,48,1,5,16,8,4,32,6,4,32
  396. Data 5,4,64,4,4,32,4,4,32
  397. Data 5,4,32,5,4,16,8,4,16,6,4,32,6,4,16,10,4,16
  398. Data 8,4,64,5,4,24,5,4,8,5,4,32,8,4,32
  399. Data 1,5,32,1,5,32,1,5,16,12,4,16,10,4,16,8,4,16
  400. Data 10,4,64,8,4,32,1,5,16
  401. Data 12,4,64,1,5,32,8,4,32
  402. Data 10,4,32,8,4,16,6,4,16,5,4,32,3,4,32
  403. Data 1,4,32,3,4,32,5,4,32,5,4,32
  404. Data 1,5,32,1,5,32,1,5,16,12,4,16,10,4,16,8,4,16
  405. Data 10,4,64,8,4,32,1,5,16
  406. Data 12,4,64,1,5,32,8,4,32
  407. Data 10,4,32,3,5,32,1,5,32,12,4,32,1,5,64
  408. '
  409. '
  410. Linien:
  411. Data 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
  412. Data 0,4,8,12,1,5,9,13,2,6,10,14,3,7,11,15
  413. Data 0,5,10,15,3,6,9,12
  414. '
  415. Data 0,16,32,48,1,17,33,49,2,18,34,50,3,19,35,51
  416. Data 0,17,34,51,3,18,33,48
  417. '
  418. Data 0,20,40,60,12,24,36,48
  419. '
  420. Data 0,21,42,63,15,26,37,48,3,22,41,60,12,25,38,51
  421. '
  422. '
  423. Zweier:
  424. Data 0,0,4,1,0,5,2,0,6,3,0,7,0,0,8,3,0,9
  425. Data 4,1,4,5,1,5,6,1,6,7,1,7,5,1,8,6,1,9
  426. Data 8,2,4,9,2,5,10,2,6,11,2,7,10,2,8,9,2,9
  427. Data 12,3,4,13,3,5,14,3,6,15,3,7,15,3,8,12,3,9
  428. Data 0,4,8,12,4,9,5,5,8,9,5,9,10,6,8,6,6,9,15,7,8,3,7,9
  429. '
  430. Data 0,4,40,4,4,46,8,4,52,12,4,58,0,4,64,12,4,65
  431. Data 16,14,40,20,14,46,24,14,52,28,14,58,20,14,64,24,14,65
  432. Data 32,24,40,36,24,46,40,24,52,44,24,58,40,24,64,36,24,65
  433. Data 48,34,40,52,34,46,56,34,52,60,34,58,60,34,64,48,34,65
  434. Data 0,40,64,48,40,65,20,46,64,36,46,65,40,52,64,24,52,65,60,58,64,12,58,65
  435. '
  436. Data 0,0,40,1,0,41,2,0,42,3,0,43,0,0,44,3,0,45
  437. Data 16,10,40,17,10,41,18,10,42,19,10,43,17,10,44,18,10,45
  438. Data 32,20,40,33,20,41,34,20,42,35,20,43,34,20,44,33,20,45
  439. Data 48,30,40,49,30,41,50,30,42,51,30,43,51,30,44,48,30,45
  440. Data 0,40,44,48,40,45,17,41,44,33,41,45,34,42,44,18,42,45,51,43,44,3,43,45
  441. '
  442. Data 0,0,72,0,4,72,0,40,72
  443. Data 21,11,72,21,15,72,21,47,72
  444. Data 42,22,72,42,26,72,42,54,72
  445. Data 63,33,72,63,37,72,63,61,72
  446. '
  447. Data 48,30,73,48,34,73,48,40,73
  448. Data 37,21,73,37,25,73,37,47,73
  449. Data 26,12,73,26,16,73,26,54,73
  450. Data 15,3,73,15,7,73,15,61,73
  451. '
  452. Data 3,0,74,3,7,74,3,43,74
  453. Data 22,11,74,22,16,74,22,48,74
  454. Data 41,22,74,41,25,74,41,53,74
  455. Data 60,33,74,60,34,74,60,58,74
  456. '
  457. Data 12,3,75,12,4,75,12,58,75
  458. Data 25,12,75,25,15,75,25,53,75
  459. Data 38,21,75,38,26,75,38,48,75
  460. Data 51,30,75,51,37,75,51,43,75
  461.